# @Time : 2025-03-26 17:17
# @Author : Fioman 
# @Phone : 13149920693
"""
QWidget 提供了丰富的尺寸设置功能，通过代码可以指定其尺寸、最大最小尺寸、获取当前尺寸等
默认行为：能完整显示其子控件的最小尺寸
"""
import sys

from PySide6 import QtWidgets
from PySide6.QtWidgets import QWidget, QApplication


class MyWindow(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QWidget-大小尺寸")
        self.setup_ui()

    def setup_ui(self):
        """
        测试功能
        :return:
        """
        self.test_01()
        self.test_02()
        self.test_03()

    def test_01(self):
        """
        测试设置尺寸功能
        :return:
        """
        self.resize(800, 600)  # 设置窗口尺寸,单位是像素
        # 最大最小尺寸
        # self.setMaximumSize(1000, 800)  # 限制对答尺寸,用户拖拽窗口能达到最大大小,但是不能使用最大化
        # 分别设置最大宽高
        # self.setMaximumWidth(1000)
        # self.setMaximumHeight(800)

        # 设置固定尺寸
        # self.setFixedSize(500, 500)  # 设置固定尺寸,用户不能拖拽窗口
        # self.setFixedWidth(500)
        # self.setFixedHeight(500)

    def test_02(self) -> None:
        """
        测试大小自动调整功能
        设置一个可以通过按钮增长的文本标签
        :return:
        """
        # 创建一个按钮，文本为“增长文本”，并将其父组件设置为self（当前窗口或对话框）
        btn = QtWidgets.QPushButton("增长文本", self)
        # 将按钮移动到坐标(100, 300)的位置
        btn.move(100, 300)
        # 创建一个标签，文本为“muziing.top”，并将其父组件设置为self（当前窗口或对话框）
        self.label = QtWidgets.QLabel("muziing.top", self)
        # 设置标签的初始大小为100x100像素
        self.label.resize(100, 100)
        # 将标签移动到坐标(0, 100)的位置
        self.label.move(0, 100)
        # 将按钮的clicked信号连接到handle_btn_click槽函数，当按钮被点击时调用该函数
        btn.clicked.connect(self.handle_btn_click)

    def test_03(self) -> None:
        """
        获取尺寸的功能
        :return:
        """
        print(self.width())  # 获取窗口的宽度
        print(self.height())  # 获取窗口的高度
        size = self.size()
        print(size.width(), size.height())  # 获取窗口的大小，返回一个QSize对象

    def handle_btn_click(self):
        """
        按钮点击事件处理函数
        :return:
        """
        # 文本自动增长,后面添加Fioman
        self.label.setText(self.label.text() + "Fioman")
        self.label.adjustSize()  # 调整文本框大小,如果没有设置大小,默认是填充内容
        self.adjustSize()  # 调整窗口大小


if __name__ == '__main__':
    app = QApplication([])
    window = MyWindow()
    window.show()
    sys.exit(app.exec())
